home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 January: Mac OS SDK / Dev.CD Jan 00 SDK1.toast / Development Kits / Mac OS / QuickTime / QuickTime 3 Interfaces & Libs / QTDevWin / CIncludes / Connections.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-21  |  13.7 KB  |  503 lines  |  [TEXT/dosa]

  1. /*
  2.      File:        Connections.h
  3.  
  4.      Contains:    Communications Toolbox Connection Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    QuickTime 3.0
  8.  
  9.      Copyright:    © 1988-1998 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18. #ifndef __CONNECTIONS__
  19. #define __CONNECTIONS__
  20.  
  21. #ifndef __CONDITIONALMACROS__
  22. #include <ConditionalMacros.h>
  23. #endif
  24. #ifndef __MACTYPES__
  25. #include <MacTypes.h>
  26. #endif
  27. #ifndef __MIXEDMODE__
  28. #include <MixedMode.h>
  29. #endif
  30. #ifndef __DIALOGS__
  31. #include <Dialogs.h>
  32. #endif
  33.  
  34.  
  35.  
  36. #if PRAGMA_ONCE
  37. #pragma once
  38. #endif
  39.  
  40. #ifdef __cplusplus
  41. extern "C" {
  42. #endif
  43.  
  44. #if PRAGMA_IMPORT
  45. #pragma import on
  46. #endif
  47.  
  48. #if PRAGMA_STRUCT_ALIGN
  49.     #pragma options align=mac68k
  50. #elif PRAGMA_STRUCT_PACKPUSH
  51.     #pragma pack(push, 2)
  52. #elif PRAGMA_STRUCT_PACK
  53.     #pragma pack(2)
  54. #endif
  55.  
  56.  
  57. enum {
  58.     curCMVersion                = 2                                /* current Connection Manager version*/
  59. };
  60.  
  61.  
  62. enum {
  63.     curConnEnvRecVers            = 0                                /*    current Connection Manager Environment Record version*/
  64. };
  65.  
  66.  
  67. enum {
  68.                                                                 /* CMErr */
  69.     cmGenericError                = -1,
  70.     cmNoErr                        = 0,
  71.     cmRejected                    = 1,
  72.     cmFailed                    = 2,
  73.     cmTimeOut                    = 3,
  74.     cmNotOpen                    = 4,
  75.     cmNotClosed                    = 5,
  76.     cmNoRequestPending            = 6,
  77.     cmNotSupported                = 7,
  78.     cmNoTools                    = 8,
  79.     cmUserCancel                = 9,
  80.     cmUnknownError                = 11
  81. };
  82.  
  83. typedef OSErr                             CMErr;
  84.  
  85.  
  86. enum {
  87.     cmData                        = 1L << 0,
  88.     cmCntl                        = 1L << 1,
  89.     cmAttn                        = 1L << 2,
  90.     cmDataNoTimeout                = 1L << 4,
  91.     cmCntlNoTimeout                = 1L << 5,
  92.     cmAttnNoTimeout                = 1L << 6,
  93.     cmDataClean                    = 1L << 8,
  94.     cmCntlClean                    = 1L << 9,
  95.     cmAttnClean                    = 1L << 10,                        /*        Only for CMRecFlags (not CMChannel) in the rest of this enum    */
  96.     cmNoMenus                    = 1L << 16,
  97.     cmQuiet                        = 1L << 17,
  98.     cmConfigChanged                = 1L << 18
  99. };
  100.  
  101. /* CMRecFlags and CMChannel        */
  102. /*        Low word of CMRecFlags is same as CMChannel    */
  103. typedef long                             CMRecFlags;
  104. typedef short                             CMChannel;
  105.  
  106.  
  107.  
  108. enum {
  109.     cmStatusOpening                = 1L << 0,
  110.     cmStatusOpen                = 1L << 1,
  111.     cmStatusClosing                = 1L << 2,
  112.     cmStatusDataAvail            = 1L << 3,
  113.     cmStatusCntlAvail            = 1L << 4,
  114.     cmStatusAttnAvail            = 1L << 5,
  115.     cmStatusDRPend                = 1L << 6,                        /* data read pending    */
  116.     cmStatusDWPend                = 1L << 7,                        /* data write pending    */
  117.     cmStatusCRPend                = 1L << 8,                        /* cntl read pending    */
  118.     cmStatusCWPend                = 1L << 9,                        /* cntl write pending    */
  119.     cmStatusARPend                = 1L << 10,                        /* attn read pending    */
  120.     cmStatusAWPend                = 1L << 11,                        /* attn write pending    */
  121.     cmStatusBreakPend            = 1L << 12,
  122.     cmStatusListenPend            = 1L << 13,
  123.     cmStatusIncomingCallPresent    = 1L << 14,
  124.     cmStatusReserved0            = 1L << 15
  125. };
  126.  
  127. typedef unsigned long                     CMStatFlags;
  128.  
  129. enum {
  130.     cmDataIn                    = 0,
  131.     cmDataOut                    = 1,
  132.     cmCntlIn                    = 2,
  133.     cmCntlOut                    = 3,
  134.     cmAttnIn                    = 4,
  135.     cmAttnOut                    = 5,
  136.     cmRsrvIn                    = 6,
  137.     cmRsrvOut                    = 7
  138. };
  139.  
  140. typedef unsigned short                     CMBufFields;
  141. typedef Ptr                             CMBuffers[8];
  142. typedef long                             CMBufferSizes[8];
  143. typedef const long *                    ConstCMBufferSizesParam;
  144.  
  145. enum {
  146.     cmSearchSevenBit            = 1L << 0
  147. };
  148.  
  149. typedef unsigned short                     CMSearchFlags;
  150.  
  151. enum {
  152.     cmFlagsEOM                    = 1L << 0
  153. };
  154.  
  155. typedef unsigned short                     CMFlags;
  156.  
  157. struct ConnEnvironRec {
  158.     short                             version;
  159.     long                             baudRate;
  160.     short                             dataBits;
  161.     CMChannel                         channels;
  162.     Boolean                         swFlowControl;
  163.     Boolean                         hwFlowControl;
  164.     CMFlags                         flags;
  165. };
  166. typedef struct ConnEnvironRec            ConnEnvironRec;
  167. typedef ConnEnvironRec *                ConnEnvironRecPtr;
  168. typedef struct ConnRecord                 ConnRecord;
  169.  
  170. typedef ConnRecord *                    ConnPtr;
  171. typedef ConnPtr *                        ConnHandle;
  172. typedef CALLBACK_API( long , ConnectionToolDefProcPtr )(ConnHandle hConn, short msg, long p1, long p2, long p3);
  173. typedef CALLBACK_API( void , ConnectionSearchCallBackProcPtr )(ConnHandle hConn, Ptr matchPtr, long refNum);
  174. typedef CALLBACK_API( void , ConnectionCompletionProcPtr )(ConnHandle hConn);
  175. typedef CALLBACK_API( void , ConnectionChooseIdleProcPtr )(void );
  176. typedef STACK_UPP_TYPE(ConnectionToolDefProcPtr)                 ConnectionToolDefUPP;
  177. typedef STACK_UPP_TYPE(ConnectionSearchCallBackProcPtr)         ConnectionSearchCallBackUPP;
  178. typedef STACK_UPP_TYPE(ConnectionCompletionProcPtr)             ConnectionCompletionUPP;
  179. typedef STACK_UPP_TYPE(ConnectionChooseIdleProcPtr)             ConnectionChooseIdleUPP;
  180.  
  181. struct ConnRecord {
  182.     short                             procID;
  183.     CMRecFlags                         flags;
  184.     CMErr                             errCode;
  185.     long                             refCon;
  186.     long                             userData;
  187.     ConnectionToolDefUPP             defProc;
  188.     Ptr                             config;
  189.     Ptr                             oldConfig;
  190.     long                             asyncEOM;
  191.     long                             reserved1;
  192.     long                             reserved2;
  193.     Ptr                             cmPrivate;
  194.     CMBuffers                         bufferArray;
  195.     CMBufferSizes                     bufSizes;
  196.     long                             mluField;
  197.     CMBufferSizes                     asyncCount;
  198. };
  199.  
  200.  
  201. enum {
  202.                                                                 /* CMIOPB constants and structure */
  203.     cmIOPBQType                    = 10,
  204.     cmIOPBversion                = 0
  205. };
  206.  
  207.  
  208. struct CMIOPB {
  209.     QElemPtr                         qLink;
  210.     short                             qType;                        /* cmIOPBQType */
  211.     ConnHandle                         hConn;
  212.     Ptr                             theBuffer;
  213.     long                             count;
  214.     CMFlags                         flags;
  215.     ConnectionCompletionUPP         userCompletion;
  216.     long                             timeout;
  217.     CMErr                             errCode;
  218.     CMChannel                         channel;
  219.     long                             asyncEOM;
  220.     long                             reserved1;
  221.     short                             reserved2;
  222.     short                             version;                    /* cmIOPBversion */
  223.     long                             refCon;                        /* for application */
  224.     long                             toolData1;                    /* for tool */
  225.     long                             toolData2;                    /* for tool */
  226. };
  227. typedef struct CMIOPB                    CMIOPB;
  228. typedef CMIOPB *                        CMIOPBPtr;
  229. enum { uppConnectionToolDefProcInfo = 0x0000FEF0 };             /* pascal 4_bytes Func(4_bytes, 2_bytes, 4_bytes, 4_bytes, 4_bytes) */
  230. enum { uppConnectionSearchCallBackProcInfo = 0x00000FC0 };         /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes) */
  231. enum { uppConnectionCompletionProcInfo = 0x000000C0 };             /* pascal no_return_value Func(4_bytes) */
  232. enum { uppConnectionChooseIdleProcInfo = 0x00000000 };             /* pascal no_return_value Func() */
  233. #define CallConnectionToolDefProc(userRoutine, hConn, msg, p1, p2, p3)  CALL_FIVE_PARAMETER_UPP((userRoutine), uppConnectionToolDefProcInfo, (hConn), (msg), (p1), (p2), (p3))
  234. #define CallConnectionSearchCallBackProc(userRoutine, hConn, matchPtr, refNum)  CALL_THREE_PARAMETER_UPP((userRoutine), uppConnectionSearchCallBackProcInfo, (hConn), (matchPtr), (refNum))
  235. #define CallConnectionCompletionProc(userRoutine, hConn)         CALL_ONE_PARAMETER_UPP((userRoutine), uppConnectionCompletionProcInfo, (hConn))
  236. #define CallConnectionChooseIdleProc(userRoutine)                 CALL_ZERO_PARAMETER_UPP((userRoutine), uppConnectionChooseIdleProcInfo)
  237. #define NewConnectionToolDefProc(userRoutine)                     (ConnectionToolDefUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppConnectionToolDefProcInfo, GetCurrentArchitecture())
  238. #define NewConnectionSearchCallBackProc(userRoutine)             (ConnectionSearchCallBackUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppConnectionSearchCallBackProcInfo, GetCurrentArchitecture())
  239. #define NewConnectionCompletionProc(userRoutine)                 (ConnectionCompletionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppConnectionCompletionProcInfo, GetCurrentArchitecture())
  240. #define NewConnectionChooseIdleProc(userRoutine)                 (ConnectionChooseIdleUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppConnectionChooseIdleProcInfo, GetCurrentArchitecture())
  241.  
  242.  
  243. EXTERN_API( CMErr )
  244. InitCM                            (void);
  245.  
  246. EXTERN_API( Handle )
  247. CMGetVersion                    (ConnHandle             hConn);
  248.  
  249. EXTERN_API( short )
  250. CMGetCMVersion                    (void);
  251.  
  252. EXTERN_API( ConnHandle )
  253. CMNew                            (short                     procID,
  254.                                  CMRecFlags             flags,
  255.                                  ConstCMBufferSizesParam  desiredSizes,
  256.                                  long                     refCon,
  257.                                  long                     userData);
  258.  
  259. EXTERN_API( void )
  260. CMDispose                        (ConnHandle             hConn);
  261.  
  262. EXTERN_API( CMErr )
  263. CMListen                        (ConnHandle             hConn,
  264.                                  Boolean                 async,
  265.                                  ConnectionCompletionUPP  completor,
  266.                                  long                     timeout);
  267.  
  268. EXTERN_API( CMErr )
  269. CMAccept                        (ConnHandle             hConn,
  270.                                  Boolean                 accept);
  271.  
  272. EXTERN_API( CMErr )
  273. CMOpen                            (ConnHandle             hConn,
  274.                                  Boolean                 async,
  275.                                  ConnectionCompletionUPP  completor,
  276.                                  long                     timeout);
  277.  
  278. EXTERN_API( CMErr )
  279. CMClose                            (ConnHandle             hConn,
  280.                                  Boolean                 async,
  281.                                  ConnectionCompletionUPP  completor,
  282.                                  long                     timeout,
  283.                                  Boolean                 now);
  284.  
  285. EXTERN_API( CMErr )
  286. CMAbort                            (ConnHandle             hConn);
  287.  
  288. EXTERN_API( CMErr )
  289. CMStatus                        (ConnHandle             hConn,
  290.                                  CMBufferSizes             sizes,
  291.                                  CMStatFlags *            flags);
  292.  
  293. EXTERN_API( void )
  294. CMIdle                            (ConnHandle             hConn);
  295.  
  296. EXTERN_API( void )
  297. CMReset                            (ConnHandle             hConn);
  298.  
  299. EXTERN_API( void )
  300. CMBreak                            (ConnHandle             hConn,
  301.                                  long                     duration,
  302.                                  Boolean                 async,
  303.                                  ConnectionCompletionUPP  completor);
  304.  
  305. EXTERN_API( CMErr )
  306. CMRead                            (ConnHandle             hConn,
  307.                                  void *                    theBuffer,
  308.                                  long *                    toRead,
  309.                                  CMChannel                 theChannel,
  310.                                  Boolean                 async,
  311.                                  ConnectionCompletionUPP  completor,
  312.                                  long                     timeout,
  313.                                  CMFlags *                flags);
  314.  
  315. EXTERN_API( CMErr )
  316. CMWrite                            (ConnHandle             hConn,
  317.                                  const void *            theBuffer,
  318.                                  long *                    toWrite,
  319.                                  CMChannel                 theChannel,
  320.                                  Boolean                 async,
  321.                                  ConnectionCompletionUPP  completor,
  322.                                  long                     timeout,
  323.                                  CMFlags                 flags);
  324.  
  325. EXTERN_API( CMErr )
  326. CMIOKill                        (ConnHandle             hConn,
  327.                                  short                     which);
  328.  
  329. EXTERN_API( void )
  330. CMActivate                        (ConnHandle             hConn,
  331.                                  Boolean                 activate);
  332.  
  333. EXTERN_API( void )
  334. CMResume                        (ConnHandle             hConn,
  335.                                  Boolean                 resume);
  336.  
  337. EXTERN_API( Boolean )
  338. CMMenu                            (ConnHandle             hConn,
  339.                                  short                     menuID,
  340.                                  short                     item);
  341.  
  342. EXTERN_API( Boolean )
  343. CMValidate                        (ConnHandle             hConn);
  344.  
  345. EXTERN_API( void )
  346. CMDefault                        (Ptr *                    theConfig,
  347.                                  short                     procID,
  348.                                  Boolean                 allocate);
  349.  
  350. EXTERN_API( Handle )
  351. CMSetupPreflight                (short                     procID,
  352.                                  long *                    magicCookie);
  353.  
  354. EXTERN_API( Boolean )
  355. CMSetupFilter                    (short                     procID,
  356.                                  const void *            theConfig,
  357.                                  short                     count,
  358.                                  DialogPtr                 theDialog,
  359.                                  EventRecord *            theEvent,
  360.                                  short *                theItem,
  361.                                  long *                    magicCookie);
  362.  
  363. EXTERN_API( void )
  364. CMSetupSetup                    (short                     procID,
  365.                                  const void *            theConfig,
  366.                                  short                     count,
  367.                                  DialogPtr                 theDialog,
  368.                                  long *                    magicCookie);
  369.  
  370. EXTERN_API( void )
  371. CMSetupItem                        (short                     procID,
  372.                                  const void *            theConfig,
  373.                                  short                     count,
  374.                                  DialogPtr                 theDialog,
  375.                                  short *                theItem,
  376.                                  long *                    magicCookie);
  377.  
  378. EXTERN_API( void )
  379. CMSetupXCleanup                    (short                     procID,
  380.                                  const void *            theConfig,
  381.                                  short                     count,
  382.                                  DialogPtr                 theDialog,
  383.                                  Boolean                 OKed,
  384.                                  long *                    magicCookie);
  385.  
  386. EXTERN_API( void )
  387. CMSetupPostflight                (short                     procID);
  388.  
  389. EXTERN_API( Ptr )
  390. CMGetConfig                        (ConnHandle             hConn);
  391.  
  392. EXTERN_API( short )
  393. CMSetConfig                        (ConnHandle             hConn,
  394.                                  const void *            thePtr);
  395.  
  396. EXTERN_API( OSErr )
  397. CMIntlToEnglish                    (ConnHandle             hConn,
  398.                                  const void *            inputPtr,
  399.                                  Ptr *                    outputPtr,
  400.                                  short                     language);
  401.  
  402. EXTERN_API( OSErr )
  403. CMEnglishToIntl                    (ConnHandle             hConn,
  404.                                  const void *            inputPtr,
  405.                                  Ptr *                    outputPtr,
  406.                                  short                     language);
  407.  
  408. EXTERN_API( long )
  409. CMAddSearch                        (ConnHandle             hConn,
  410.                                  ConstStr255Param         theString,
  411.                                  CMSearchFlags             flags,
  412.                                  ConnectionSearchCallBackUPP  callBack);
  413.  
  414. EXTERN_API( void )
  415. CMRemoveSearch                    (ConnHandle             hConn,
  416.                                  long                     refnum);
  417.  
  418. EXTERN_API( void )
  419. CMClearSearch                    (ConnHandle             hConn);
  420.  
  421. EXTERN_API( CMErr )
  422. CMGetConnEnvirons                (ConnHandle             hConn,
  423.                                  ConnEnvironRec *        theEnvirons);
  424.  
  425. EXTERN_API( short )
  426. CMChoose                        (ConnHandle *            hConn,
  427.                                  Point                     where,
  428.                                  ConnectionChooseIdleUPP  idle);
  429.  
  430. EXTERN_API( void )
  431. CMEvent                            (ConnHandle             hConn,
  432.                                  const EventRecord *    theEvent);
  433.  
  434. EXTERN_API( void )
  435. CMGetToolName                    (short                     procID,
  436.                                  Str255                 name);
  437.  
  438. EXTERN_API( short )
  439. CMGetProcID                        (ConstStr255Param         name);
  440.  
  441. EXTERN_API( void )
  442. CMSetRefCon                        (ConnHandle             hConn,
  443.                                  long                     refCon);
  444.  
  445. EXTERN_API( long )
  446. CMGetRefCon                        (ConnHandle             hConn);
  447.  
  448. EXTERN_API( long )
  449. CMGetUserData                    (ConnHandle             hConn);
  450.  
  451. EXTERN_API( void )
  452. CMSetUserData                    (ConnHandle             hConn,
  453.                                  long                     userData);
  454.  
  455. EXTERN_API( void )
  456. CMGetErrorString                (ConnHandle             hConn,
  457.                                  short                     id,
  458.                                  Str255                 errMsg);
  459.  
  460. EXTERN_API( CMErr )
  461. CMNewIOPB                        (ConnHandle             hConn,
  462.                                  CMIOPBPtr *            theIOPB);
  463.  
  464. EXTERN_API( CMErr )
  465. CMDisposeIOPB                    (ConnHandle             hConn,
  466.                                  CMIOPBPtr                 theIOPB);
  467.  
  468. EXTERN_API( CMErr )
  469. CMPBRead                        (ConnHandle             hConn,
  470.                                  CMIOPBPtr                 theIOPB,
  471.                                  Boolean                 async);
  472.  
  473. EXTERN_API( CMErr )
  474. CMPBWrite                        (ConnHandle             hConn,
  475.                                  CMIOPBPtr                 theIOPB,
  476.                                  Boolean                 async);
  477.  
  478. EXTERN_API( CMErr )
  479. CMPBIOKill                        (ConnHandle             hConn,
  480.                                  CMIOPBPtr                 theIOPB);
  481.  
  482.  
  483. #if PRAGMA_STRUCT_ALIGN
  484.     #pragma options align=reset
  485. #elif PRAGMA_STRUCT_PACKPUSH
  486.     #pragma pack(pop)
  487. #elif PRAGMA_STRUCT_PACK
  488.     #pragma pack()
  489. #endif
  490.  
  491. #ifdef PRAGMA_IMPORT_OFF
  492. #pragma import off
  493. #elif PRAGMA_IMPORT
  494. #pragma import reset
  495. #endif
  496.  
  497. #ifdef __cplusplus
  498. }
  499. #endif
  500.  
  501. #endif /* __CONNECTIONS__ */
  502.  
  503.